package net.wzw.enums;

import lombok.Getter;

/**
 * @className: BizCodes
 * @author: wzw
 * @date: 2024-08-12 16:55
 * @Version: 1.0
 * @description: 业务状态码枚举类
 * 整个状态码总共 7 位，前三位表示「业务微服务」状态码，后4位表示「服务内部接口」状态码，后续需要再进行拆分。
 * 公共操作：110。
 * 用户服务：210，其中验证码：2101 开头，用户账号：2102 开头。
 * 购物车服务：310。
 * 商品服务：410。
 * 优惠券服务：510。
 * 订单服务：610。
 * 支付服务：710。
 */
public enum BizCodes {
    /**
     * 通用操作码
     */
    COMMON_OP_REPEAT(110001,"重复操作"),
    COMMON_ALERT_FAIL(1100012,"告警失败"),

    COMMON_PARAM_ERROR(1100013,"参数错误"),

    COMMON_SERVER_ERROR(1100014,"服务异常"),
    /**
     * 用户微服务验证码相关  2101 开头
     */
    USER_PHONE_ERROR(2101001,"手机号不合法"),
    USER_CODE_FAST_LIMITED(2101002,"验证码发送太快了"),
    USER_CODE_PHONE_ERROR(2101003,"手机验证码错误"),
    USER_CODE_CAPTCHA_ERROR(2101004,"图形验证码错误"),
    USER_CODE_EMAIL_ERROR(2101004,"邮箱验证码错误"),

    /**
     * 用户微服务账号相关 2102 开头
     */
    USER_ACCOUNT_EXIST(2102001,"用户账号已存在"),
    USER_ACCOUNT_UNREGISTER(2102002,"用户账号未注册"),
    USER_ACCOUNT_PWD_ERROR(2102003,"用户账号或密码错误"),
    USER_REFRESH_TOKEN_EMPTY(2102004,"用户刷新 token 为空"),
    USER_ACCOUNT_UNLOGIN(2102005,"用户账号未登录"),

    USER_UPDATE_LOCK_FAIL(2102006,"修改用户信息获取锁失败"),

    USER_INFO_LOCK_FAIL(2102006,"用户信息获取锁失败"),

    USER_LOGIN_SUCCESS(0,"用户登录成功"),

    /**
     * 用户微服务上传相关 2103 开头
     */
    USER_AVATAR_FILE_UPLOAD_ERROR(2103001, "用户头像上传失败"),

    USER_ADDRESS_NOT_EXIST(2103002,"用户地址不存在"),

    USER_ADDRESS_DEL_FAIL(2103003,"删除指定的收货地址"),

    USER_ADDRESS_NOT_EXITS(2103004,"收货地址不存在"),

    FOOD_INFO_NOT_EXITS(3103001,"美食信息不存在"),

    FOOD_INFO_LOCK_FAIL(3103002,"美食加锁失败");

    /**
     * 错误信息
     */
    @Getter
    private String message;

    /**
     * code 状态码
     */
    @Getter
    private int code;

    /**
     * 内部使用
     * @param code
     * @param message
     */
    private BizCodes(int code, String message) {
        this.code = code;
        this.message = message;
    }
}
